Read-only memory (ROM), also known as firmware, is an integrated circuit programmed with specific data when it is manufactured. ROM chips are used not only in computers, but in most other electronic items as well. There are many different types of ROM, such as PROM (Programmable ROM), FPROM (Field Programmable ROM), EPROM (Erasable PROM), EEPROM (Electrically Erasable PROM), MROM (Mask ROM), and Flash Memory. Each type has unique characteristics, with two things in common: data stored in these chips is nonvolatile, and data stored in these chips is either unchangeable or requires a special operation to change.
There are many instances where it is reasonable or possible for an end-user to upgrade the ROM of a device by completely removing the existing ROM and replacing it with a new ROM. However, in certain cases, it may be desirable or advantageous to simply apply a “patch” to a ROM, in order to fix problems or modify software functionality. A patch is a piece of software that modifies the program executable file so that certain code execution or data accesses are redirected from the ROM to alternative code or data. The “program executable file” is a binary file containing the program the user actually runs and may contain certain software patches that alter program execution. In these cases, the program executable file is located in Random Access Memory (RAM), flash, or other memory that works along with the code/data in ROM, and it is possible and reasonable for the end-user to upgrade this part of the software that is not in ROM.
Creating data and code patches for a ROM mask is a laborious and error prone procedure. An individual must manually identify each code/data set in ROM, make decisions on what to patch, and on how to patch it. It is desirable to have a method to overcome some of the drawbacks of the prior art.
It will be noted that throughout the appended drawings, like features are identified by like reference numerals.